#include "linux-alsa-sound.h"

int main(int argc, char const *argv[])
{
    /* code */
    LinuxAlsaSound alsaSound;
    // SND_PCM_STREAM_CAPTURE 录音的方式打开
    // plughw:1,0 那个子设备 子设备有几个通道
    bool ok = alsaSound.open("plughw:1,0", SND_PCM_STREAM_CAPTURE);
    if (!ok)
    {
        fprintf(stderr, "Fail to open alsaSound  plughw:1,0 \n");
        return -1;
    }

    pcm_hw_param_t parms = {
        .access = SND_PCM_ACCESS_RW_INTERLEAVED, // 交错模式:SND_PCM_ACCESS_RW_INTERLEAVED
        .format = SND_PCM_FORMAT_S16_LE,         // 无符号16位小端 位深一个样本用多少个二进制标识
        .channels = 1,                           // 通道数
        .sampleRate = 16000,                     // 采样率 每秒采样多少次
        .sampleBits = 16,                        // 16位的二进制标识一个样本
        .frames = 32                             // 一个周期多少祯
    };

    ok = alsaSound.setParams(&parms);
    if (!ok)
    {
        fprintf(stderr, "Fail to alsaSound  setParams \n");
        return -1;
    }

    // vector<uint8_t> pcmData;
    // ok = alsaSound.record(5000, pcmData);
    // if (!ok)
    // {
    //     fprintf(stderr, "Fail to alsaSound  record \n");
    //     return -1;
    // }
    // cout << "record ok:" << ok << endl;

    // ok = alsaSound.recordPCMData(15, "test.pcm");
    ok = alsaSound.recoredWAVData(5, "test.wav");
    cout << "recordPCMData ok:" << ok << endl;

    return 0;
}
